package view;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import Dub.DubDeTemporada;
import Dub.DubPrenda;
import Dub.DubSinTemporada;
import controler.SistemaIndumentaria;

import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;

public class ModificarPrenda extends JFrame  {
	private static final long serialVersionUID = 1L;
	private JLabel lblCodigoPrenda;
	private JTextField txtNombre;
	private JLabel lblCodigoConjunto;
	private JTextField txtCodigoPrenda;
	private JButton btnAgregar;
	private JButton jBBuscar;
	private JLabel jLalerta;
	private JButton btnCerrar;
	private JComboBox<String> comboBox;
	private JLabel lblTipoPrenda;
	private final JLabel lblAoTemporada = new JLabel("Temporada");
	private JComboBox<String> comboBox_1;
	private Container contenedor;
	
	public ModificarPrenda()
	{
		
		this.setVisible(true);
		setBounds(100, 100, 450, 352);
		this.setLocationRelativeTo(null);
		this.setTitle("Modificar prenda");
		getContentPane().setLayout(new GridLayout(8,2));
		
		contenedor = this.getContentPane();
		getContentPane().add(lblAoTemporada);
		
		comboBox_1 = new JComboBox<String>();
		comboBox_1.setEnabled(false);
		comboBox_1.setModel(new DefaultComboBoxModel<String>(new String[] {"Oto�o", "Invierno", "Primavera", "Verano"}));
		comboBox_1.setSelectedIndex(-1);
		getContentPane().add(comboBox_1);
		
		lblTipoPrenda = new JLabel("Tipo prenda:");
		getContentPane().add(lblTipoPrenda);
		
		comboBox = new JComboBox<String>();
		comboBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if ((String)comboBox.getSelectedItem() == "Sin temporada") {
					comboBox_1.setEnabled(false);
				}
				
				if ((String)comboBox.getSelectedItem() == "De temporada") {
					comboBox_1.setEnabled(true);
				}
			}
		});
		
		comboBox.setModel(new DefaultComboBoxModel<String>(new String[] {"Sin temporada", "De temporada"}));		
		comboBox.setSelectedIndex(-1);
		comboBox.setEnabled(false);
		comboBox.setMaximumRowCount(2);
		getContentPane().add(comboBox);
		

		lblCodigoConjunto = new JLabel();
		lblCodigoConjunto.setText("Codigo de prenda:");
		contenedor.add(lblCodigoConjunto);
		
		txtCodigoPrenda = new JTextField();
		txtCodigoPrenda.setSize(30,100);
		contenedor.add(txtCodigoPrenda);
			
		lblCodigoPrenda = new JLabel();
		lblCodigoPrenda.setText("Nombre prenda:");
		contenedor.add(lblCodigoPrenda);
		
		txtNombre = new JTextField();
		txtNombre.setSize(30,100);
		txtNombre.setVisible(false);
		contenedor.add(txtNombre);
	
		
		btnAgregar = new JButton();
		btnAgregar.setText("Modificar");
		btnAgregar.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				DubPrenda p;

				if ((String)comboBox.getSelectedItem() == "Sin temporada") {
					
					if (!txtCodigoPrenda.getText().equals("") && !txtNombre.getText().equals("")) {
						p = new DubSinTemporada(txtNombre.getText(), Integer.parseInt(txtCodigoPrenda.getText()));
						if (SistemaIndumentaria.getInstancia().modificarPrendaSinTemporada((DubSinTemporada)p)) {						
							txtCodigoPrenda.setText("");
							txtNombre.setText("");
						}
					} else {
						JOptionPane.showMessageDialog(ModificarPrenda.this.contenedor,"Todos los campos son requeridos",
							    "Campos vacios",
							    JOptionPane.ERROR_MESSAGE); 
					}
				}
				
				else {
					
					if (!txtCodigoPrenda.getText().equals("") && !txtNombre.getText().equals("") && comboBox_1.getSelectedItem()!=null) {

						p = new DubDeTemporada(txtNombre.getText(), Integer.parseInt(txtCodigoPrenda.getText()), (String) comboBox_1.getSelectedItem());
						if (SistemaIndumentaria.getInstancia().modificarPrendaConTemporada((DubDeTemporada)p)){	
							txtCodigoPrenda.setText("");
							txtNombre.setText("");
							comboBox_1.setSelectedIndex(-1);							
						}
					} else {
						JOptionPane.showMessageDialog(ModificarPrenda.this.contenedor,"Todos los campos son requeridos",
							    "Campos vacios",
							    JOptionPane.ERROR_MESSAGE); 
					}
				}
			}
		});
		contenedor.add(btnAgregar);
		btnCerrar = new JButton();
		btnCerrar.setText("Cerrar");
		contenedor.add(btnCerrar);	
		btnCerrar.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {

				ModificarPrenda.this.setVisible(false);
			}
		});

		jBBuscar = new JButton();
		getContentPane().add(jBBuscar);
		jBBuscar.setText("BUSCAR");
		jBBuscar.setBounds(210, 21, 119, 21);
		jBBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {

				DubPrenda dubm = null; 
				dubm = SistemaIndumentaria.getInstancia().buscarDubPrenda(Integer.parseInt(txtCodigoPrenda.getText()));
				if (dubm == null)
				   {
					jLalerta.setForeground(Color.RED);
					jLalerta.setText("La Prenda no existe");
				   }
				else
					{
					txtNombre.setVisible(true);
					txtNombre.setText(dubm.getNombre());
					  if(dubm.getTipo().equalsIgnoreCase("DeTemporada")){			  
						  comboBox.setSelectedIndex(1);
						  String estacion = ((DubDeTemporada) dubm).getEstacionAnio();
						  int estacionNum = 0;
						  switch(estacion){ 
						  case "Oto�o": estacionNum = 0;
						  	break;	
						  case "Invierno": estacionNum = 1;
						  	break;	
						  case "Primavera": estacionNum = 2;
						  	break;	
						  case "Verano": estacionNum = 3;
						  	break;
						  }
						  comboBox_1.setSelectedIndex(estacionNum);						  
					  }
					  else{
						  comboBox.setSelectedIndex(0);						  
					  }
					  						
					}				
			}
		});
		
		jLalerta = new JLabel();
		getContentPane().add(jLalerta);
		jLalerta.setBounds(49, 124, 287, 19);
	}
}
